matrix chain problem